为这个问题痛苦了很久!所以就决定把本该放在 Wiki 上的东西放这了!起因是明明设置了环境变量,却不能在 python 文件中获取。
问题描述
非常诡异的一件事
Jupter 和 python shell 都能运行的代码:
运行 py 文件就不行
Error:
问题探索
来看一下环境变量,同样诡异的事就发生了,用 jupter 或 python shell 运行下面的代码,可以得到环境变量路径
然而放到 py 文件里,就只能 output 出一个 None
为啥!明明设置好了环境变量!看 ~/.bash_profile
索性一个简单粗暴的方法是直接在 py 文件里,StanfordParser 传进绝对地址参数,第一个参数是 path/to/jar,第二个参数是 path/to/module,然后就 可以运行文件了。
然而想一想,我们要用 Stanford PoS tagging,要用 NER,要用 parser,还要用 dependency parser,那得多麻烦!而且作为一个 team,share code,每个人的路径都不一样。。。
有两个解决方案,一是把对应的 jar 包,model 之类的所有东西放进当前目录下,然后在 py 文件里 get 当前目录,再进行拼接,传入参数;二是单独设置一个配置文件,每个人都配好各自的环境,在 py 文件里调用配置文件,这两种方法都可以解决个人路径不一样的问题。
然而,为什么还是这么麻烦。为什么 get 不到环境变量!
问题解决
来看一下 os.environ 这个函数,才发现 os.environ 保存的是 python 运行的当前 shell 中的环境变量。于是就想到了:我们根本没有在当前 shell 中 mark & export varible 好不好!所以:
|
|
Done!